home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 October: Mac OS SDK / Dev.CD Oct 00 SDK1.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / MediaHandlers.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  25.8 KB  |  737 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        MediaHandlers.h
  3.  
  4.      Contains:    QuickTime interfaces
  5.  
  6.      Version:    Technology:    
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1990-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __MEDIAHANDLERS__
  18. #define __MEDIAHANDLERS__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21.     #include <ConditionalMacros.h>
  22. #endif
  23.  
  24. #ifndef __MACTYPES__
  25.     #include <MacTypes.h>
  26. #endif
  27.  
  28. #ifndef __COMPONENTS__
  29.     #include <Components.h>
  30. #endif
  31.  
  32. #ifndef __MOVIES__
  33.     #include <Movies.h>
  34. #endif
  35.  
  36. #ifndef __SOUND__
  37.     #include <Sound.h>
  38. #endif
  39.  
  40.  
  41.  
  42.  
  43. #if PRAGMA_ONCE
  44. #pragma once
  45. #endif
  46.  
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50.  
  51. #if PRAGMA_IMPORT
  52. #pragma import on
  53. #endif
  54.  
  55. #if PRAGMA_STRUCT_ALIGN
  56.     #pragma options align=mac68k
  57. #elif PRAGMA_STRUCT_PACKPUSH
  58.     #pragma pack(push, 2)
  59. #elif PRAGMA_STRUCT_PACK
  60.     #pragma pack(2)
  61. #endif
  62.  
  63. typedef CALLBACK_API( void , PrePrerollCompleteProcPtr )(MediaHandler mh, OSErr err, void *refcon);
  64. typedef STACK_UPP_TYPE(PrePrerollCompleteProcPtr)                 PrePrerollCompleteUPP;
  65. enum {
  66.     handlerHasSpatial            = 1 << 0,
  67.     handlerCanClip                = 1 << 1,
  68.     handlerCanMatte                = 1 << 2,
  69.     handlerCanTransferMode        = 1 << 3,
  70.     handlerNeedsBuffer            = 1 << 4,
  71.     handlerNoIdle                = 1 << 5,
  72.     handlerNoScheduler            = 1 << 6,
  73.     handlerWantsTime            = 1 << 7,
  74.     handlerCGrafPortOnly        = 1 << 8,
  75.     handlerCanSend                = 1 << 9,
  76.     handlerCanHandleComplexMatrix = 1 << 10,
  77.     handlerWantsDestinationPixels = 1 << 11,
  78.     handlerCanSendImageData        = 1 << 12,
  79.     handlerCanPicSave            = 1 << 13
  80. };
  81.  
  82. /* media task flags */
  83. enum {
  84.     mMustDraw                    = 1 << 3,
  85.     mAtEnd                        = 1 << 4,
  86.     mPreflightDraw                = 1 << 5,
  87.     mSyncDrawing                = 1 << 6,
  88.     mPrecompositeOnly            = 1 << 9,
  89.     mSoundOnly                    = 1 << 10,
  90.     mDoIdleActionsBeforeDraws    = 1 << 11,
  91.     mDisableIdleActions            = 1 << 12
  92. };
  93.  
  94. /* media task result flags */
  95. enum {
  96.     mDidDraw                    = 1 << 0,
  97.     mNeedsToDraw                = 1 << 2,
  98.     mDrawAgain                    = 1 << 3,
  99.     mPartialDraw                = 1 << 4,
  100.     mWantIdleActions            = 1 << 5
  101. };
  102.  
  103. enum {
  104.     forceUpdateRedraw            = 1 << 0,
  105.     forceUpdateNewBuffer        = 1 << 1
  106. };
  107.  
  108. /* media hit test flags */
  109. enum {
  110.     mHitTestBounds                = 1L << 0,                        /*    point must only be within targetRefCon's bounding box */
  111.     mHitTestImage                = 1L << 1,                        /*  point must be within the shape of the targetRefCon's image */
  112.     mHitTestInvisible            = 1L << 2,                        /*  invisible targetRefCon's may be hit tested */
  113.     mHitTestIsClick                = 1L << 3                        /*  for codecs that want mouse events */
  114. };
  115.  
  116. /* media is opaque flags */
  117. enum {
  118.     mOpaque                        = 1L << 0,
  119.     mInvisible                    = 1L << 1
  120. };
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128. struct GetMovieCompleteParams {
  129.     short                             version;
  130.     Movie                             theMovie;
  131.     Track                             theTrack;
  132.     Media                             theMedia;
  133.     TimeScale                         movieScale;
  134.     TimeScale                         mediaScale;
  135.     TimeValue                         movieDuration;
  136.     TimeValue                         trackDuration;
  137.     TimeValue                         mediaDuration;
  138.     Fixed                             effectiveRate;
  139.     TimeBase                         timeBase;
  140.     short                             volume;
  141.     Fixed                             width;
  142.     Fixed                             height;
  143.     MatrixRecord                     trackMovieMatrix;
  144.     CGrafPtr                         moviePort;
  145.     GDHandle                         movieGD;
  146.     PixMapHandle                     trackMatte;
  147.     QTAtomContainer                 inputMap;
  148. };
  149. typedef struct GetMovieCompleteParams    GetMovieCompleteParams;
  150. enum {
  151.     kMediaVideoParamBrightness    = 1,
  152.     kMediaVideoParamContrast    = 2,
  153.     kMediaVideoParamHue            = 3,
  154.     kMediaVideoParamSharpness    = 4,
  155.     kMediaVideoParamSaturation    = 5,
  156.     kMediaVideoParamBlackLevel    = 6,
  157.     kMediaVideoParamWhiteLevel    = 7
  158. };
  159.  
  160.  
  161. typedef Handle *                        dataHandlePtr;
  162. typedef dataHandlePtr *                    dataHandleHandle;
  163.  
  164.  
  165. struct QTCustomActionTargetRecord {
  166.     Movie                             movie;
  167.     DoMCActionUPP                     doMCActionCallbackProc;
  168.     long                             callBackRefcon;
  169.     Track                             track;
  170.     long                             trackObjectRefCon;
  171.     Track                             defaultTrack;
  172.     long                             defaultObjectRefCon;
  173.     long                             reserved1;
  174.     long                             reserved2;
  175. };
  176. typedef struct QTCustomActionTargetRecord QTCustomActionTargetRecord;
  177.  
  178. typedef QTCustomActionTargetRecord *    QTCustomActionTargetPtr;
  179.  
  180. struct MediaEQSpectrumBandsRecord {
  181.     short                             count;
  182.     UnsignedFixedPtr                 frequency;                    /* pointer to array of frequencies*/
  183. };
  184. typedef struct MediaEQSpectrumBandsRecord MediaEQSpectrumBandsRecord;
  185. typedef MediaEQSpectrumBandsRecord *    MediaEQSpectrumBandsRecordPtr;
  186. EXTERN_API( ComponentResult )
  187. CallComponentExecuteWiredAction    (ComponentInstance         ci,
  188.                                  QTAtomContainer         actionContainer,
  189.                                  QTAtom                 actionAtom,
  190.                                  QTCustomActionTargetPtr  target,
  191.                                  QTEventRecordPtr         event)                                FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF7, 0x7000, 0xA82A);
  192.  
  193.  
  194. /* MediaCallRange2 */
  195. /* These are unique to each type of media handler */
  196. /* They are also included in the public interfaces */
  197.  
  198.  
  199. /***** These are the calls for dealing with the Generic media handler *****/
  200. EXTERN_API( ComponentResult )
  201. MediaInitialize                    (MediaHandler             mh,
  202.                                  GetMovieCompleteParams * gmc)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0501, 0x7000, 0xA82A);
  203.  
  204. EXTERN_API( ComponentResult )
  205. MediaSetHandlerCapabilities        (MediaHandler             mh,
  206.                                  long                     flags,
  207.                                  long                     flagsMask)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0502, 0x7000, 0xA82A);
  208.  
  209. EXTERN_API( ComponentResult )
  210. MediaIdle                        (MediaHandler             mh,
  211.                                  TimeValue                 atMediaTime,
  212.                                  long                     flagsIn,
  213.                                  long *                    flagsOut,
  214.                                  const TimeRecord *        movieTime)                            FIVEWORDINLINE(0x2F3C, 0x0010, 0x0503, 0x7000, 0xA82A);
  215.  
  216. EXTERN_API( ComponentResult )
  217. MediaGetMediaInfo                (MediaHandler             mh,
  218.                                  Handle                 h)                                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0504, 0x7000, 0xA82A);
  219.  
  220. EXTERN_API( ComponentResult )
  221. MediaPutMediaInfo                (MediaHandler             mh,
  222.                                  Handle                 h)                                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0505, 0x7000, 0xA82A);
  223.  
  224. EXTERN_API( ComponentResult )
  225. MediaSetActive                    (MediaHandler             mh,
  226.                                  Boolean                 enableMedia)                        FIVEWORDINLINE(0x2F3C, 0x0002, 0x0506, 0x7000, 0xA82A);
  227.  
  228. EXTERN_API( ComponentResult )
  229. MediaSetRate                    (MediaHandler             mh,
  230.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0507, 0x7000, 0xA82A);
  231.  
  232. EXTERN_API( ComponentResult )
  233. MediaGGetStatus                    (MediaHandler             mh,
  234.                                  ComponentResult *        statusErr)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0508, 0x7000, 0xA82A);
  235.  
  236. EXTERN_API( ComponentResult )
  237. MediaTrackEdited                (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0509, 0x7000, 0xA82A);
  238.  
  239. EXTERN_API( ComponentResult )
  240. MediaSetMediaTimeScale            (MediaHandler             mh,
  241.                                  TimeScale                 newTimeScale)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x050A, 0x7000, 0xA82A);
  242.  
  243. EXTERN_API( ComponentResult )
  244. MediaSetMovieTimeScale            (MediaHandler             mh,
  245.                                  TimeScale                 newTimeScale)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x050B, 0x7000, 0xA82A);
  246.  
  247. EXTERN_API( ComponentResult )
  248. MediaSetGWorld                    (MediaHandler             mh,
  249.                                  CGrafPtr                 aPort,
  250.                                  GDHandle                 aGD)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A);
  251.  
  252. EXTERN_API( ComponentResult )
  253. MediaSetDimensions                (MediaHandler             mh,
  254.                                  Fixed                     width,
  255.                                  Fixed                     height)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x050D, 0x7000, 0xA82A);
  256.  
  257. EXTERN_API( ComponentResult )
  258. MediaSetClip                    (MediaHandler             mh,
  259.                                  RgnHandle                 theClip)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A);
  260.  
  261. EXTERN_API( ComponentResult )
  262. MediaSetMatrix                    (MediaHandler             mh,
  263.                                  MatrixRecord *            trackMovieMatrix)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A);
  264.  
  265. EXTERN_API( ComponentResult )
  266. MediaGetTrackOpaque                (MediaHandler             mh,
  267.                                  Boolean *                trackIsOpaque)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x0510, 0x7000, 0xA82A);
  268.  
  269. EXTERN_API( ComponentResult )
  270. MediaSetGraphicsMode            (MediaHandler             mh,
  271.                                  long                     mode,
  272.                                  const RGBColor *        opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0511, 0x7000, 0xA82A);
  273.  
  274. EXTERN_API( ComponentResult )
  275. MediaGetGraphicsMode            (MediaHandler             mh,
  276.                                  long *                    mode,
  277.                                  RGBColor *                opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0512, 0x7000, 0xA82A);
  278.  
  279. EXTERN_API( ComponentResult )
  280. MediaGSetVolume                    (MediaHandler             mh,
  281.                                  short                     volume)                                FIVEWORDINLINE(0x2F3C, 0x0002, 0x0513, 0x7000, 0xA82A);
  282.  
  283. EXTERN_API( ComponentResult )
  284. MediaSetSoundBalance            (MediaHandler             mh,
  285.                                  short                     balance)                            FIVEWORDINLINE(0x2F3C, 0x0002, 0x0514, 0x7000, 0xA82A);
  286.  
  287. EXTERN_API( ComponentResult )
  288. MediaGetSoundBalance            (MediaHandler             mh,
  289.                                  short *                balance)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0515, 0x7000, 0xA82A);
  290.  
  291. EXTERN_API( ComponentResult )
  292. MediaGetNextBoundsChange        (MediaHandler             mh,
  293.                                  TimeValue *            when)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0516, 0x7000, 0xA82A);
  294.  
  295. EXTERN_API( ComponentResult )
  296. MediaGetSrcRgn                    (MediaHandler             mh,
  297.                                  RgnHandle                 rgn,
  298.                                  TimeValue                 atMediaTime)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0517, 0x7000, 0xA82A);
  299.  
  300. EXTERN_API( ComponentResult )
  301. MediaPreroll                    (MediaHandler             mh,
  302.                                  TimeValue                 time,
  303.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x0518, 0x7000, 0xA82A);
  304.  
  305. EXTERN_API( ComponentResult )
  306. MediaSampleDescriptionChanged    (MediaHandler             mh,
  307.                                  long                     index)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0519, 0x7000, 0xA82A);
  308.  
  309. EXTERN_API( ComponentResult )
  310. MediaHasCharacteristic            (MediaHandler             mh,
  311.                                  OSType                 characteristic,
  312.                                  Boolean *                hasIt)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x051A, 0x7000, 0xA82A);
  313.  
  314. EXTERN_API( ComponentResult )
  315. MediaGetOffscreenBufferSize        (MediaHandler             mh,
  316.                                  Rect *                    bounds,
  317.                                  short                     depth,
  318.                                  CTabHandle             ctab)                                FIVEWORDINLINE(0x2F3C, 0x000A, 0x051B, 0x7000, 0xA82A);
  319.  
  320. EXTERN_API( ComponentResult )
  321. MediaSetHints                    (MediaHandler             mh,
  322.                                  long                     hints)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x051C, 0x7000, 0xA82A);
  323.  
  324. EXTERN_API( ComponentResult )
  325. MediaGetName                    (MediaHandler             mh,
  326.                                  Str255                 name,
  327.                                  long                     requestedLanguage,
  328.                                  long *                    actualLanguage)                        FIVEWORDINLINE(0x2F3C, 0x000C, 0x051D, 0x7000, 0xA82A);
  329.  
  330. EXTERN_API( ComponentResult )
  331. MediaForceUpdate                (MediaHandler             mh,
  332.                                  long                     forceUpdateFlags)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x051E, 0x7000, 0xA82A);
  333.  
  334. EXTERN_API( ComponentResult )
  335. MediaGetDrawingRgn                (MediaHandler             mh,
  336.                                  RgnHandle *            partialRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x051F, 0x7000, 0xA82A);
  337.  
  338. EXTERN_API( ComponentResult )
  339. MediaGSetActiveSegment            (MediaHandler             mh,
  340.                                  TimeValue                 activeStart,
  341.                                  TimeValue                 activeDuration)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0520, 0x7000, 0xA82A);
  342.  
  343. EXTERN_API( ComponentResult )
  344. MediaInvalidateRegion            (MediaHandler             mh,
  345.                                  RgnHandle                 invalRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0521, 0x7000, 0xA82A);
  346.  
  347. EXTERN_API( ComponentResult )
  348. MediaGetNextStepTime            (MediaHandler             mh,
  349.                                  short                     flags,
  350.                                  TimeValue                 mediaTimeIn,
  351.                                  TimeValue *            mediaTimeOut,
  352.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x000E, 0x0522, 0x7000, 0xA82A);
  353.  
  354. EXTERN_API( ComponentResult )
  355. MediaSetNonPrimarySourceData    (MediaHandler             mh,
  356.                                  long                     inputIndex,
  357.                                  long                     dataDescriptionSeed,
  358.                                  Handle                 dataDescription,
  359.                                  void *                    data,
  360.                                  long                     dataSize,
  361.                                  ICMCompletionProcRecordPtr  asyncCompletionProc,
  362.                                  UniversalProcPtr         transferProc,
  363.                                  void *                    refCon)                                FIVEWORDINLINE(0x2F3C, 0x0020, 0x0523, 0x7000, 0xA82A);
  364.  
  365. EXTERN_API( ComponentResult )
  366. MediaChangedNonPrimarySource    (MediaHandler             mh,
  367.                                  long                     inputIndex)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0524, 0x7000, 0xA82A);
  368.  
  369. EXTERN_API( ComponentResult )
  370. MediaTrackReferencesChanged        (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0525, 0x7000, 0xA82A);
  371.  
  372. EXTERN_API( ComponentResult )
  373. MediaGetSampleDataPointer        (MediaHandler             mh,
  374.                                  long                     sampleNum,
  375.                                  Ptr *                    dataPtr,
  376.                                  long *                    dataSize,
  377.                                  long *                    sampleDescIndex)                    FIVEWORDINLINE(0x2F3C, 0x0010, 0x0526, 0x7000, 0xA82A);
  378.  
  379. EXTERN_API( ComponentResult )
  380. MediaReleaseSampleDataPointer    (MediaHandler             mh,
  381.                                  long                     sampleNum)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0527, 0x7000, 0xA82A);
  382.  
  383. EXTERN_API( ComponentResult )
  384. MediaTrackPropertyAtomChanged    (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0528, 0x7000, 0xA82A);
  385.  
  386. EXTERN_API( ComponentResult )
  387. MediaSetTrackInputMapReference    (MediaHandler             mh,
  388.                                  QTAtomContainer         inputMap)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0529, 0x7000, 0xA82A);
  389.  
  390.  
  391. EXTERN_API( ComponentResult )
  392. MediaSetVideoParam                (MediaHandler             mh,
  393.                                  long                     whichParam,
  394.                                  unsigned short *        value)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x052B, 0x7000, 0xA82A);
  395.  
  396. EXTERN_API( ComponentResult )
  397. MediaGetVideoParam                (MediaHandler             mh,
  398.                                  long                     whichParam,
  399.                                  unsigned short *        value)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x052C, 0x7000, 0xA82A);
  400.  
  401. EXTERN_API( ComponentResult )
  402. MediaCompare                    (MediaHandler             mh,
  403.                                  Boolean *                isOK,
  404.                                  Media                     srcMedia,
  405.                                  ComponentInstance         srcMediaComponent)                    FIVEWORDINLINE(0x2F3C, 0x000C, 0x052D, 0x7000, 0xA82A);
  406.  
  407. EXTERN_API( ComponentResult )
  408. MediaGetClock                    (MediaHandler             mh,
  409.                                  ComponentInstance *    clock)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x052E, 0x7000, 0xA82A);
  410.  
  411. EXTERN_API( ComponentResult )
  412. MediaSetSoundOutputComponent    (MediaHandler             mh,
  413.                                  Component                 outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x052F, 0x7000, 0xA82A);
  414.  
  415. EXTERN_API( ComponentResult )
  416. MediaGetSoundOutputComponent    (MediaHandler             mh,
  417.                                  Component *            outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0530, 0x7000, 0xA82A);
  418.  
  419. EXTERN_API( ComponentResult )
  420. MediaSetSoundLocalizationData    (MediaHandler             mh,
  421.                                  Handle                 data)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0531, 0x7000, 0xA82A);
  422.  
  423.  
  424.  
  425.  
  426. EXTERN_API( ComponentResult )
  427. MediaGetInvalidRegion            (MediaHandler             mh,
  428.                                  RgnHandle                 rgn)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x053C, 0x7000, 0xA82A);
  429.  
  430.  
  431. EXTERN_API( ComponentResult )
  432. MediaSampleDescriptionB2N        (MediaHandler             mh,
  433.                                  SampleDescriptionHandle  sampleDescriptionH)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x053E, 0x7000, 0xA82A);
  434.  
  435. EXTERN_API( ComponentResult )
  436. MediaSampleDescriptionN2B        (MediaHandler             mh,
  437.                                  SampleDescriptionHandle  sampleDescriptionH)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x053F, 0x7000, 0xA82A);
  438.  
  439. EXTERN_API( ComponentResult )
  440. MediaQueueNonPrimarySourceData    (MediaHandler             mh,
  441.                                  long                     inputIndex,
  442.                                  long                     dataDescriptionSeed,
  443.                                  Handle                 dataDescription,
  444.                                  void *                    data,
  445.                                  long                     dataSize,
  446.                                  ICMCompletionProcRecordPtr  asyncCompletionProc,
  447.                                  const ICMFrameTimeRecord * frameTime,
  448.                                  UniversalProcPtr         transferProc,
  449.                                  void *                    refCon)                                FIVEWORDINLINE(0x2F3C, 0x0024, 0x0540, 0x7000, 0xA82A);
  450.  
  451. EXTERN_API( ComponentResult )
  452. MediaFlushNonPrimarySourceData    (MediaHandler             mh,
  453.                                  long                     inputIndex)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0541, 0x7000, 0xA82A);
  454.  
  455.  
  456. EXTERN_API( ComponentResult )
  457. MediaGetURLLink                    (MediaHandler             mh,
  458.                                  Point                     displayWhere,
  459.                                  Handle *                urlLink)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0543, 0x7000, 0xA82A);
  460.  
  461.  
  462. EXTERN_API( ComponentResult )
  463. MediaMakeMediaTimeTable            (MediaHandler             mh,
  464.                                  long **                offsets,
  465.                                  TimeValue                 startTime,
  466.                                  TimeValue                 endTime,
  467.                                  TimeValue                 timeIncrement,
  468.                                  short                     firstDataRefIndex,
  469.                                  short                     lastDataRefIndex,
  470.                                  long *                    retDataRefSkew)                        FIVEWORDINLINE(0x2F3C, 0x0018, 0x0545, 0x7000, 0xA82A);
  471.  
  472. EXTERN_API( ComponentResult )
  473. MediaHitTestForTargetRefCon        (MediaHandler             mh,
  474.                                  long                     flags,
  475.                                  Point                     loc,
  476.                                  long *                    targetRefCon)                        FIVEWORDINLINE(0x2F3C, 0x000C, 0x0546, 0x7000, 0xA82A);
  477.  
  478. EXTERN_API( ComponentResult )
  479. MediaHitTestTargetRefCon        (MediaHandler             mh,
  480.                                  long                     targetRefCon,
  481.                                  long                     flags,
  482.                                  Point                     loc,
  483.                                  Boolean *                wasHit)                                FIVEWORDINLINE(0x2F3C, 0x0010, 0x0547, 0x7000, 0xA82A);
  484.  
  485. EXTERN_API( ComponentResult )
  486. MediaGetActionsForQTEvent        (MediaHandler             mh,
  487.                                  QTEventRecordPtr         event,
  488.                                  long                     targetRefCon,
  489.                                  QTAtomContainer *        container,
  490.                                  QTAtom *                atom)                                FIVEWORDINLINE(0x2F3C, 0x0010, 0x0548, 0x7000, 0xA82A);
  491.  
  492. EXTERN_API( ComponentResult )
  493. MediaDisposeTargetRefCon        (MediaHandler             mh,
  494.                                  long                     targetRefCon)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x0549, 0x7000, 0xA82A);
  495.  
  496. EXTERN_API( ComponentResult )
  497. MediaTargetRefConsEqual            (MediaHandler             mh,
  498.                                  long                     firstRefCon,
  499.                                  long                     secondRefCon,
  500.                                  Boolean *                equal)                                FIVEWORDINLINE(0x2F3C, 0x000C, 0x054A, 0x7000, 0xA82A);
  501.  
  502. EXTERN_API( ComponentResult )
  503. MediaSetActionsCallback            (MediaHandler             mh,
  504.                                  ActionsUPP             actionsCallbackProc,
  505.                                  void *                    refcon)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x054B, 0x7000, 0xA82A);
  506.  
  507. EXTERN_API( ComponentResult )
  508. MediaPrePrerollBegin            (MediaHandler             mh,
  509.                                  TimeValue                 time,
  510.                                  Fixed                     rate,
  511.                                  PrePrerollCompleteUPP     completeProc,
  512.                                  void *                    refcon)                                FIVEWORDINLINE(0x2F3C, 0x0010, 0x054C, 0x7000, 0xA82A);
  513.  
  514. EXTERN_API( ComponentResult )
  515. MediaPrePrerollCancel            (MediaHandler             mh,
  516.                                  void *                    refcon)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x054D, 0x7000, 0xA82A);
  517.  
  518.  
  519. EXTERN_API( ComponentResult )
  520. MediaEnterEmptyEdit                (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x054F, 0x7000, 0xA82A);
  521.  
  522. EXTERN_API( ComponentResult )
  523. MediaCurrentMediaQueuedData        (MediaHandler             mh,
  524.                                  long *                    milliSecs)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0550, 0x7000, 0xA82A);
  525.  
  526. EXTERN_API( ComponentResult )
  527. MediaGetEffectiveVolume            (MediaHandler             mh,
  528.                                  short *                volume)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0551, 0x7000, 0xA82A);
  529.  
  530. EXTERN_API( ComponentResult )
  531. MediaResolveTargetRefCon        (MediaHandler             mh,
  532.                                  QTAtomContainer         container,
  533.                                  QTAtom                 atom,
  534.                                  long *                    targetRefCon)                        FIVEWORDINLINE(0x2F3C, 0x000C, 0x0552, 0x7000, 0xA82A);
  535.  
  536. EXTERN_API( ComponentResult )
  537. MediaGetSoundLevelMeteringEnabled (MediaHandler         mh,
  538.                                  Boolean *                enabled)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0553, 0x7000, 0xA82A);
  539.  
  540. EXTERN_API( ComponentResult )
  541. MediaSetSoundLevelMeteringEnabled (MediaHandler         mh,
  542.                                  Boolean                 enable)                                FIVEWORDINLINE(0x2F3C, 0x0002, 0x0554, 0x7000, 0xA82A);
  543.  
  544. EXTERN_API( ComponentResult )
  545. MediaGetSoundLevelMeterInfo        (MediaHandler             mh,
  546.                                  LevelMeterInfoPtr         levelInfo)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0555, 0x7000, 0xA82A);
  547.  
  548. EXTERN_API( ComponentResult )
  549. MediaGetEffectiveSoundBalance    (MediaHandler             mh,
  550.                                  short *                balance)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0556, 0x7000, 0xA82A);
  551.  
  552. EXTERN_API( ComponentResult )
  553. MediaSetScreenLock                (MediaHandler             mh,
  554.                                  Boolean                 lockIt)                                FIVEWORDINLINE(0x2F3C, 0x0002, 0x0557, 0x7000, 0xA82A);
  555.  
  556. EXTERN_API( ComponentResult )
  557. MediaSetDoMCActionCallback        (MediaHandler             mh,
  558.                                  DoMCActionUPP             doMCActionCallbackProc,
  559.                                  void *                    refcon)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x0558, 0x7000, 0xA82A);
  560.  
  561. EXTERN_API( ComponentResult )
  562. MediaGetErrorString                (MediaHandler             mh,
  563.                                  ComponentResult         theError,
  564.                                  Str255                 errorString)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0559, 0x7000, 0xA82A);
  565.  
  566. EXTERN_API( ComponentResult )
  567. MediaGetSoundEqualizerBands        (MediaHandler             mh,
  568.                                  MediaEQSpectrumBandsRecordPtr  spectrumInfo)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x055A, 0x7000, 0xA82A);
  569.  
  570. EXTERN_API( ComponentResult )
  571. MediaSetSoundEqualizerBands        (MediaHandler             mh,
  572.                                  MediaEQSpectrumBandsRecordPtr  spectrumInfo)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x055B, 0x7000, 0xA82A);
  573.  
  574. EXTERN_API( ComponentResult )
  575. MediaGetSoundEqualizerBandLevels (MediaHandler             mh,
  576.                                  UInt8 *                bandLevels)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x055C, 0x7000, 0xA82A);
  577.  
  578. EXTERN_API( ComponentResult )
  579. MediaDoIdleActions                (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x055D, 0x7000, 0xA82A);
  580.  
  581. EXTERN_API( ComponentResult )
  582. MediaSetSoundBassAndTreble        (MediaHandler             mh,
  583.                                  short                     bass,
  584.                                  short                     treble)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x055E, 0x7000, 0xA82A);
  585.  
  586. EXTERN_API( ComponentResult )
  587. MediaGetSoundBassAndTreble        (MediaHandler             mh,
  588.                                  short *                bass,
  589.                                  short *                treble)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x055F, 0x7000, 0xA82A);
  590.  
  591. EXTERN_API( ComponentResult )
  592. MediaTimeBaseChanged            (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0560, 0x7000, 0xA82A);
  593.  
  594. EXTERN_API( ComponentResult )
  595. MediaMCIsPlayerEvent            (MediaHandler             mh,
  596.                                  const EventRecord *    e,
  597.                                  Boolean *                handledIt)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0561, 0x7000, 0xA82A);
  598.  
  599. EXTERN_API( ComponentResult )
  600. MediaGetMediaLoadState            (MediaHandler             mh,
  601.                                  long *                    mediaLoadState)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x0562, 0x7000, 0xA82A);
  602.  
  603.  
  604.  
  605.  
  606.  
  607. /* selectors for component calls */
  608. enum {
  609.     kCallComponentExecuteWiredActionSelect            = -9,
  610.     kMediaInitializeSelect                            = 0x0501,
  611.     kMediaSetHandlerCapabilitiesSelect                = 0x0502,
  612.     kMediaIdleSelect                                = 0x0503,
  613.     kMediaGetMediaInfoSelect                        = 0x0504,
  614.     kMediaPutMediaInfoSelect                        = 0x0505,
  615.     kMediaSetActiveSelect                            = 0x0506,
  616.     kMediaSetRateSelect                                = 0x0507,
  617.     kMediaGGetStatusSelect                            = 0x0508,
  618.     kMediaTrackEditedSelect                            = 0x0509,
  619.     kMediaSetMediaTimeScaleSelect                    = 0x050A,
  620.     kMediaSetMovieTimeScaleSelect                    = 0x050B,
  621.     kMediaSetGWorldSelect                            = 0x050C,
  622.     kMediaSetDimensionsSelect                        = 0x050D,
  623.     kMediaSetClipSelect                                = 0x050E,
  624.     kMediaSetMatrixSelect                            = 0x050F,
  625.     kMediaGetTrackOpaqueSelect                        = 0x0510,
  626.     kMediaSetGraphicsModeSelect                        = 0x0511,
  627.     kMediaGetGraphicsModeSelect                        = 0x0512,
  628.     kMediaGSetVolumeSelect                            = 0x0513,
  629.     kMediaSetSoundBalanceSelect                        = 0x0514,
  630.     kMediaGetSoundBalanceSelect                        = 0x0515,
  631.     kMediaGetNextBoundsChangeSelect                    = 0x0516,
  632.     kMediaGetSrcRgnSelect                            = 0x0517,
  633.     kMediaPrerollSelect                                = 0x0518,
  634.     kMediaSampleDescriptionChangedSelect            = 0x0519,
  635.     kMediaHasCharacteristicSelect                    = 0x051A,
  636.     kMediaGetOffscreenBufferSizeSelect                = 0x051B,
  637.     kMediaSetHintsSelect                            = 0x051C,
  638.     kMediaGetNameSelect                                = 0x051D,
  639.     kMediaForceUpdateSelect                            = 0x051E,
  640.     kMediaGetDrawingRgnSelect                        = 0x051F,
  641.     kMediaGSetActiveSegmentSelect                    = 0x0520,
  642.     kMediaInvalidateRegionSelect                    = 0x0521,
  643.     kMediaGetNextStepTimeSelect                        = 0x0522,
  644.     kMediaSetNonPrimarySourceDataSelect                = 0x0523,
  645.     kMediaChangedNonPrimarySourceSelect                = 0x0524,
  646.     kMediaTrackReferencesChangedSelect                = 0x0525,
  647.     kMediaGetSampleDataPointerSelect                = 0x0526,
  648.     kMediaReleaseSampleDataPointerSelect            = 0x0527,
  649.     kMediaTrackPropertyAtomChangedSelect            = 0x0528,
  650.     kMediaSetTrackInputMapReferenceSelect            = 0x0529,
  651.     kMediaSetVideoParamSelect                        = 0x052B,
  652.     kMediaGetVideoParamSelect                        = 0x052C,
  653.     kMediaCompareSelect                                = 0x052D,
  654.     kMediaGetClockSelect                            = 0x052E,
  655.     kMediaSetSoundOutputComponentSelect                = 0x052F,
  656.     kMediaGetSoundOutputComponentSelect                = 0x0530,
  657.     kMediaSetSoundLocalizationDataSelect            = 0x0531,
  658.     kMediaGetInvalidRegionSelect                    = 0x053C,
  659.     kMediaSampleDescriptionB2NSelect                = 0x053E,
  660.     kMediaSampleDescriptionN2BSelect                = 0x053F,
  661.     kMediaQueueNonPrimarySourceDataSelect            = 0x0540,
  662.     kMediaFlushNonPrimarySourceDataSelect            = 0x0541,
  663.     kMediaGetURLLinkSelect                            = 0x0543,
  664.     kMediaMakeMediaTimeTableSelect                    = 0x0545,
  665.     kMediaHitTestForTargetRefConSelect                = 0x0546,
  666.     kMediaHitTestTargetRefConSelect                    = 0x0547,
  667.     kMediaGetActionsForQTEventSelect                = 0x0548,
  668.     kMediaDisposeTargetRefConSelect                    = 0x0549,
  669.     kMediaTargetRefConsEqualSelect                    = 0x054A,
  670.     kMediaSetActionsCallbackSelect                    = 0x054B,
  671.     kMediaPrePrerollBeginSelect                        = 0x054C,
  672.     kMediaPrePrerollCancelSelect                    = 0x054D,
  673.     kMediaEnterEmptyEditSelect                        = 0x054F,
  674.     kMediaCurrentMediaQueuedDataSelect                = 0x0550,
  675.     kMediaGetEffectiveVolumeSelect                    = 0x0551,
  676.     kMediaResolveTargetRefConSelect                    = 0x0552,
  677.     kMediaGetSoundLevelMeteringEnabledSelect        = 0x0553,
  678.     kMediaSetSoundLevelMeteringEnabledSelect        = 0x0554,
  679.     kMediaGetSoundLevelMeterInfoSelect                = 0x0555,
  680.     kMediaGetEffectiveSoundBalanceSelect            = 0x0556,
  681.     kMediaSetScreenLockSelect                        = 0x0557,
  682.     kMediaSetDoMCActionCallbackSelect                = 0x0558,
  683.     kMediaGetErrorStringSelect                        = 0x0559,
  684.     kMediaGetSoundEqualizerBandsSelect                = 0x055A,
  685.     kMediaSetSoundEqualizerBandsSelect                = 0x055B,
  686.     kMediaGetSoundEqualizerBandLevelsSelect            = 0x055C,
  687.     kMediaDoIdleActionsSelect                        = 0x055D,
  688.     kMediaSetSoundBassAndTrebleSelect                = 0x055E,
  689.     kMediaGetSoundBassAndTrebleSelect                = 0x055F,
  690.     kMediaTimeBaseChangedSelect                        = 0x0560,
  691.     kMediaMCIsPlayerEventSelect                        = 0x0561,
  692.     kMediaGetMediaLoadStateSelect                    = 0x0562
  693. };
  694. #if OPAQUE_UPP_TYPES
  695.     EXTERN_API(PrePrerollCompleteUPP)
  696.     NewPrePrerollCompleteUPP       (PrePrerollCompleteProcPtr userRoutine);
  697.  
  698.     EXTERN_API(void)
  699.     DisposePrePrerollCompleteUPP    (PrePrerollCompleteUPP    userUPP);
  700.  
  701.     EXTERN_API(void)
  702.     InvokePrePrerollCompleteUPP       (MediaHandler            mh,
  703.                                     OSErr                    err,
  704.                                     void *                    refcon,
  705.                                     PrePrerollCompleteUPP    userUPP);
  706.  
  707. #else
  708.     enum { uppPrePrerollCompleteProcInfo = 0x00000EC0 };             /* pascal no_return_value Func(4_bytes, 2_bytes, 4_bytes) */
  709.     #define NewPrePrerollCompleteUPP(userRoutine)                     (PrePrerollCompleteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPrePrerollCompleteProcInfo, GetCurrentArchitecture())
  710.     #define DisposePrePrerollCompleteUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  711.     #define InvokePrePrerollCompleteUPP(mh, err, refcon, userUPP)     CALL_THREE_PARAMETER_UPP((userUPP), uppPrePrerollCompleteProcInfo, (mh), (err), (refcon))
  712. #endif
  713. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  714. #define NewPrePrerollCompleteProc(userRoutine)                     NewPrePrerollCompleteUPP(userRoutine)
  715. #define CallPrePrerollCompleteProc(userRoutine, mh, err, refcon) InvokePrePrerollCompleteUPP(mh, err, refcon, userRoutine)
  716.  
  717. #if PRAGMA_STRUCT_ALIGN
  718.     #pragma options align=reset
  719. #elif PRAGMA_STRUCT_PACKPUSH
  720.     #pragma pack(pop)
  721. #elif PRAGMA_STRUCT_PACK
  722.     #pragma pack()
  723. #endif
  724.  
  725. #ifdef PRAGMA_IMPORT_OFF
  726. #pragma import off
  727. #elif PRAGMA_IMPORT
  728. #pragma import reset
  729. #endif
  730.  
  731. #ifdef __cplusplus
  732. }
  733. #endif
  734.  
  735. #endif /* __MEDIAHANDLERS__ */
  736.  
  737.